/*****************************************************
	Nome: 		VISEDc Core Module
	Versão:		3.5

	Funcionalidades:
	- Controle de Execução
	- Processamento de mensagens ao usuário

 *****************************************************/

	#if !defined (CORE_MODULE_INCLUDED)
	#define CORE_MODULE_INCLUDED


#include "misc/DEFS.H"
#include "misc/MODEL.H"
//#include "MED.H"
#include "dat/DAT.H"

#include <iostream>
#include <string>

#define BUF_SIZE 512					// Tamanho do buffer global

using namespace std;
extern char Buf[BUF_SIZE];



class CORE;
extern CORE Core;



/*
class VIS {

	public:
	inline void Camera_SetOffset( REAL offset[2] ) {}
	inline void Camera_SetZoom( REAL zoom = 0 ) {}
};*/




class CORE {

	char FileName[MAX_PATH];				// Caminho do arquivo de entrada, sem extensão

	void Load_INI( const char* filepath );
	void Save_INI();


	public:

	MODEL Model;
	MED Med;
	DAT Dat;
	//VIS Vis;
    CORE()
    {

    }



	inline void PostMsg( string msg ) {cout<<msg<<'\n';};				// Coloca uma mensagem na tela

	void Run();

	void GetInput( int argc, char* argv[] );		// Extrai o nome de arquivo da linha de comando
	char* GetFileName( char* buf, int size );		// Armazena o nome de arquivo no buffer
	void Log( string s1, string s2 = "", string s3 = "" );	// Registra uma ocorrência
	void Error( string msg, int row = 0 );			// Exibe uma mensagem de erro e termina
};


	#endif	// CORE_MODULE_INCLUDED
